// function TreeNode(x) {
//     this.val = x;
//     this.left = null;
//     this.right = null;
// }
function PrintFromTopToBottom(root)
{
    // write code here
    // 从根节点判断 先打印根节点 再打印左节点 的根节点 再打印右几点的根节点
    // 广度优先搜索 借助队列来完成
    // 把根节点加入队列当中 只要队列不为空就打印一下队列的首元素 并且从队列中弹出
    // 此外 我们将当前打印节点的左右节点 分别加入到队列当中 
    // 依次弹出 一个节点 将其左右节点加入队列当中
    // 代码

    // 初始判断一下 如果根节点为null 
    if(root === null) return []
    // 这个是要输出的结果
    var res = []
    // list 这个元素弹出首元素的时间复杂度是o(n)
    // deque的时间复杂度是链表 所以弹出的首元素的时间复杂度是o(1)
    var queue = []
    // 将根节点加入队列当中
    queue.push(root)
    // 只要是队列不为null 就弹出首元素
    while(queue.length !== 0){
        // 弹出队列的首元素
        var node = queue.shift()
        // 将首元素的插入的结果数组中 插入的是数值
        res.push(node.val)
        // 如果 这个节点有左节点和右节点 就将其加入队列中
        if(node.left) queue.push(node.left)
        if(node.right) queue.push(node.right)
    }
    // console.log(res);
    return res
}
module.exports = {
    PrintFromTopToBottom : PrintFromTopToBottom
};